
template <class T>
//class Solution {
//public:
//    bool canJump(vector<int>& nums) {
//        int total = nums[0];
//        for (int i = 0; i < nums.size(); ++i)
//        {
//            if (total < nums[i] && total >= 0)
//                total = nums[i];
//            if (nums.size() - 1 > 0)
//                total -= 1;
//        }
//        return total >= -1 ? true : false;
//    }
//};

class Solution {
public:
	bool canJump(vector<int>& nums) {
		int k = 0;
		for (int i = 0; i < nums.size(); ++i)
		{
			if (i > k)
				return false;
			k = max(k, i + nums[i]);
		}
		return true;
	}
};